
update ASM_VEN_TUT_RIEP A
set (a.tipo_cont,a.consumo) = 
(select d.tipo_con,d.consumi

from(

select case when c.consumi <= 5000 or c.consumi is null then '<=     5.000' else
           case when c.consumi >= 5001 and c.consumi <= 10000 then '<=    10.000' else
                case when c.consumi >= 10001 and c.consumi <= 15000 then '<=    15.000' else
                     case when c.consumi >= 15001 and c.consumi <= 20000 then '<=    20.000' else
                        case when c.consumi >= 20001 and c.consumi <= 50000 then '<=    50.000' else   
                          case when c.consumi >= 50001 and c.consumi <= 100000 then '<=   100.000' else
                               case when c.consumi >= 100001 and c.consumi <= 500000 then '<=   500.000' else
                                    case when c.consumi >= 500001 and c.consumi <= 2000000 then '<=  2.000.000' else
                                         case when c.consumi >= 2000001 and c.consumi <= 20000000 then '<= 20.000.000' else
                                              case when c.consumi >= 20000001 and c.consumi <= 50000000 then '<= 50.000.000' else
                                                   case when c.consumi >= 50000001 and c.consumi <= 70000000 then '<= 70.000.000' else
                                                        case when c.consumi >= 70000001 and c.consumi <= 150000000 then '<=150.000.000' else                               
                               
                               
                               
                               
                               
                               
                                                      '>150.000.000' 
                                                        end end end end end end end end end end end end  tipo_con,
         c.codice_contratto,c.mese,c.consumi
 from 

(
select contratto_estratto  codice_contratto, to_char(data_emissione_fattura,'mm')  mese,min(data_inizio_periodo),max(data_fine_periodo),round(sum(quantita_scaglione)/
case when (max(data_fine_periodo)-min(data_inizio_periodo)) = 0 then 1 
     else  to_number(max(data_fine_periodo)-min(data_inizio_periodo)) end  *365) consumi 
from asm_vend_tutela
where progressivo_voce in ( '010','010TRAS','010VEND','888')
group by contratto_estratto,to_char(data_emissione_fattura,'mm')
)c
)d
where a.contratto_estratto = d.codice_contratto
and   a.mese = d.mese
)
where dom = 'NOD'



